Java Technologies Upper Bounded এবং Lower Bounded Type Parameters গাইড ও নোট

316

Generics-এ bounded type parameters ব্যবহার করা হয় একটি নির্দিষ্ট টাইপ বা টাইপ রেঞ্জ সীমাবদ্ধ করতে। এভাবে আমরা টাইপ প্যারামিটারগুলোর সাথে আরও নির্দিষ্ট নিয়ম প্রয়োগ করতে পারি।


Upper Bounded Type Parameter

Upper bounded টাইপ প্যারামিটার একটি টাইপকে নির্ধারিত ক্লাস বা ইন্টারফেস (এবং তার সাবক্লাস/ইমপ্লিমেন্টেশন) এর মধ্যে সীমাবদ্ধ করে। এটি extends কীওয়ার্ড ব্যবহার করে ঘোষণা করা হয়।

সিনট্যাক্স:

<T extends ClassName>

উদাহরণ:

import java.util.ArrayList;
import java.util.List;

public class Main {
    // Upper Bounded Generics Method
    public static double sumOfNumbers(List<? extends Number> list) {
        double sum = 0.0;
        for (Number num : list) {
            sum += num.doubleValue();
        }
        return sum;
    }

    public static void main(String[] args) {
        List<Integer> intList = new ArrayList<>();
        intList.add(10);
        intList.add(20);
        intList.add(30);

        List<Double> doubleList = new ArrayList<>();
        doubleList.add(5.5);
        doubleList.add(10.5);

        System.out.println("Sum of Integers: " + sumOfNumbers(intList));
        System.out.println("Sum of Doubles: " + sumOfNumbers(doubleList));
    }
}

আউটপুট:

Sum of Integers: 60.0
Sum of Doubles: 16.0

কী শিখলাম:

  • ? extends Number নির্দেশ করে যে লিস্টের টাইপ Number বা তার সাবক্লাস হতে হবে (যেমন Integer, Double)।
  • এটি ডেটা রিড করতে কার্যকর।

Lower Bounded Type Parameter

Lower bounded টাইপ প্যারামিটার একটি টাইপকে নির্দিষ্ট ক্লাস বা তার সুপারক্লাসের মধ্যে সীমাবদ্ধ করে। এটি super কীওয়ার্ড ব্যবহার করে ঘোষণা করা হয়।

সিনট্যাক্স:

<T super ClassName>

উদাহরণ:

import java.util.ArrayList;
import java.util.List;

public class Main {
    // Lower Bounded Generics Method
    public static void addNumbers(List<? super Integer> list) {
        list.add(10);
        list.add(20);
    }

    public static void main(String[] args) {
        List<Number> numberList = new ArrayList<>();
        addNumbers(numberList);

        System.out.println("Number List: " + numberList);
    }
}

আউটপুট:

Number List: [10, 20]

কী শিখলাম:

  • ? super Integer নির্দেশ করে যে লিস্টের টাইপ Integer বা তার সুপারক্লাস হতে হবে (যেমন Number, Object)।
  • এটি ডেটা যোগ করার ক্ষেত্রে কার্যকর।

Upper vs Lower Bounded

বৈশিষ্ট্যUpper BoundedLower Bounded
কীওয়ার্ডextendssuper
কাজের ধরনরিডিং ডেটার জন্য কার্যকরলেখার/ডেটা যোগ করার জন্য কার্যকর
টাইপ রেঞ্জনির্দিষ্ট ক্লাস বা তার সাবক্লাসনির্দিষ্ট ক্লাস বা তার সুপারক্লাস

Wildcard in Generics

? হলো একটি wildcard যা টাইপ প্যারামিটারকে নমনীয় করে। এটি ? extends এবং ? super এর মাধ্যমে টাইপ রেঞ্জ নির্ধারণ করতে ব্যবহৃত হয়।

উদাহরণ:

// Wildcard with Upper Bound
List<? extends Number> upperBoundList;

// Wildcard with Lower Bound
List<? super Integer> lowerBoundList;

  1. Upper Bounded: নির্দিষ্ট টাইপের উপরে টাইপ সীমাবদ্ধ করতে কার্যকর।
  2. Lower Bounded: নির্দিষ্ট টাইপের নিচে টাইপ সীমাবদ্ধ করতে কার্যকর।
  3. Wildcard: নমনীয় টাইপ ম্যানিপুলেশনের জন্য।

Generics এ Upper এবং Lower Bounded Type Parameters টাইপ নিরাপত্তা ও ফ্লেক্সিবিলিটি বাড়ায়। এটি বড় ও জটিল জাভা প্রোজেক্টে বিশেষভাবে গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...